Міністерство освіти та науки України
Національний університет «Львівська політехніка»
ЗВІТ
З лабораторних робіт №1-5
З дисципліни: «Програмування ч.4»
Мета:
1) Реалізувати алгоритм знаходження найбільшого спільного дільника D=nsd(a,b) за формулою d = x*a+y*b
2) Дано два зростаючих масиви, знайти спільні елементи в масивах
3) Вивести всі підмножини довжини k множини {1..n}
4) Перерахувати всі способи розстановки n ферзів на шахівниці n на n, при яких вони не б'ють один одного.
5) Є масив цілих чисел a [1] .. a [n], причому всі числа невід'ємні і не перевершують m. Відсортувати цей масив.
Блок-схеми:
1)
2)
3)
4)
5)
Лістінги програм:
/****************************************************************\
FILE..........: main.cpp
AUTHOR........: Andriy Picyk
DESCRIPTION...: The header file contains programming_labs.
METHOD........: result, Similar_elements, get_Count, Generate, Create_arr, show_arr, mod_arr, Exit, Backtracking
FUNCTIONS.....: factorial, Similar_elements, Generate, Create_arr, show_arr, mod_arr, Exit, Backtracking
SWITCHES......: WIN32 - if defined, 32-bit version is
compiled, otherwise 16-bit edition is compiled.
COPYRIGHT.....: Copyright (c) 2010.
HISTORY.......: DATE COMMENT
-------- --------------------------------------
-
04-14-10 Created - Andriy
\****************************************************************/
/*===============================[ PUBLIC DECLARATIONS ]========*/
#include <iostream>
#include <cstdlib>
#include <conio.h>
#include <ctime>
#include "main.h"
using namespace std;
int main()
{
/*===============================[ OBJECT DECLARATIONS ]=======*/
CEvklid* nsd;
CSimilar* similar;
CSubset* sub;
CQueen* queen;
CSort* OSort;
/*===============================[ PRIVATE DECLARATIONS]=======*/
int labs;
while (1)
{
system("cls");
cout << "Enter number of labs: ";
labs = getch() - 48;
cout << labs << endl;
switch(labs)
{
case 1:
int iA, iB;
cout << "Object-oriented method" << endl;
cout << "a = ";
cin >> iA;
cout << "b = ";
cin >> iB;
nsd = new CEvklid(iA,iB);
cout << nsd->Seek() << endl;
system("PAUSE");
system("cls");
cout << "a = ";
cin >> iA;
cout << "b = ";
cin >> iB;
cout << Evklid(iA,iB) << endl;
cout << "Procedure-oriented method" << endl;
system("PAUSE");
break;
case 2:
cout << "Object-oriented method" << endl;
int iK, iL;
cout << "k = ";
cin >> iK;
cout << "l = ";
cin >> iL;
similar = new CSimilar(iK,iL);
similar->Similar_elements();
cout << "Odnakovuh elementib " << similar->get_Count() << endl;
system("PAUSE");
system("cls");
cout << "Procedure-oriented method" << endl;
cout << "k = ";
cin >> iK;
cout << "l = ";
cin >> iL;
cout << "Odnakovuh elementib " << Similar_elements(iK, iL) << endl;
system("PAUSE");
break;
case 3:
int iN;
cout << "Object-oriented method" << endl;
cout << "n = ";
cin >> iN;
cout << "k = ";
cin >> iK;
sub = new CSubset(iN, iK);
sub->Generate();
system("PAUSE");
system("cls");
cout << "Procedure-oriented method" << endl;
cout << "n = ";
cin >> iN;
cout << "k = ";
cin >> iK;
Generate(iN,iK);
system("PAUSE");
break;
case 4:
int iCount;
cout << "Object-oriented method" << endl;
cout << "n = ";
cin >> iN;
queen = new CQueen(iN);
queen->Create_arr();
queen->Backtracking(1);
queen->Print_Count();
queen->~CQueen();
system("PAUSE");
system("cls");
iCount = 0;
int* piArr;
int** ppiDoshka;
cout << "Procedure-oriented method" << endl;
cout << "n = ";
cin >> iN;
piArr = new int[iN];
ppiDoshka = new int*[iN];
for(int i=0;i<iN;i++)
{
ppiDoshka[i] = new int[iN];
}
Create_arr(ppiDoshka, iN);
cout << "Roztashyvannja " << iN << " ferziv:" << endl;
Backtracking(1, ppiDoshka, iN, piArr, &iCount);
cout << "Vsogo " << iCount << " roztashyvan" << endl;
...